#include <my_header.h>

/* Usage:  */
// 初始化socket服务的函数
// 第一个参数:传入传出参数，socket对象的文件描述符            
// 第二个参数：ip地址
// 第三个参数：端口
// 返回值：0创建socket成功，—1代表失败
int initSocket(int *socket_fd, char *ip, char *port)
{
    *socket_fd = socket(AF_INET, SOCK_STREAM, 0);
    ERROR_CHECK(*socket_fd, -1, "socket");

    // 断线重连
    int reuse = 1;
    int res_set = setsockopt(*socket_fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));

    // 构建struct socker 类型
    struct sockaddr_in sockaddr;
    sockaddr.sin_family = AF_INET;
    sockaddr.sin_port = htons(atoi(port));
    sockaddr.sin_addr.s_addr = inet_addr(ip);

    // 绑定ip地址和端口
    int res_bind = bind(*socket_fd, (struct sockaddr *)&sockaddr, sizeof(sockaddr));
    ERROR_CHECK(res_bind, -1, "bind");

    // 监听
    int res_lis = listen(*socket_fd, 10);
    ERROR_CHECK(res_lis,-1, "listen");

    return 0;
}

